package com.yht.weblog.common.domain.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yht.weblog.common.domain.dos.StatisticsArticlePVDO;

import java.time.LocalDate;
import java.util.List;

/**
 * @author: yht
 * @date: 2024/1/28 17:22
 * @description:
 **/
public interface StatisticsArticlePVMapper extends BaseMapper<StatisticsArticlePVDO> {

    /**
     * 增加指定日期的 PV 访问量
     *
     * @param date 日期
     * @return 影响行数
     */
    default int increasePVCount(LocalDate date){

        return update(null, Wrappers.<StatisticsArticlePVDO>lambdaUpdate()
                .setSql("pv_count = pv_count + 1")
                .eq(StatisticsArticlePVDO::getPvDate, date));
    }

    /**
     * 查询最近 7 天的 PV 访问量记录
     *
     * @return 最近 7 天的 PV 访问量记录
     */
    default List<StatisticsArticlePVDO> selectLatestWeekRecords(){
        return selectList(Wrappers.<StatisticsArticlePVDO>lambdaQuery()
                .le(StatisticsArticlePVDO::getPvDate, LocalDate.now().plusDays(1))
                .orderByDesc(StatisticsArticlePVDO::getPvDate)
                .last("limit 7"));
    }

}
